1. Field
This application relates generally to communication, and more specifically to ensuring IP address uniqueness when transitioning active link-local IPv6 addresses to globally-addressable IPv6 addresses.
2. Background
In an Internet Protocol (IP) network, a host communicates with another host via a router. In IP terminology, a “node” is a device that implements IP, a “router” is a node that forwards IP packets not explicitly addressed to itself, and a “host” is a node that is not a router. As used herein, “IP” generically refers to all versions of the Internet Protocol. A host may have one or multiple interfaces to a link. In IP terminology, a “link” is a communication facility or medium over which nodes can communicate at a link layer (which is the layer immediately below IP), and an “interface” is a node's attachment to a link. An interface may be viewed as a network communication port. Each interface is associated with one or more IP addresses that uniquely identify that interface.
Internet Protocol Version 6 (IPv6) is a version of Internet Protocol that is slated to replace the widely used Internet Protocol Version 4 (IPv4). IPv6 resolves some of the key limitations of IPv4. For example, IPv4 utilizes a 32-bit address that was originally thought to provide an ample number of addresses to uniquely identify machines connected to the Internet. However, the explosive growth of the Internet has created a real risk of running out of IPv4 addresses. IPv6 ameliorates this concern by utilizing a 128-bit address.
IPv6 also provides other improvements over IPv4. For example, IPv6 supports “stateless address auto configuration”, which is a process whereby a host can automatically configure its own IPv6 address(es). Stateless address configuration can avoid the need to manually configure each host before connection to a network, eliminate the need for a dedicated server to administer and assign addresses to hosts on the network, and facilitate renumbering of addresses for hosts on the network.
Stateless address auto configuration in IPv6 allows for nodes to generate multiple addresses, such as “privacy addresses,” as defined in RFC 3041. The two primary types of addresses are called link-local and global addresses. Link-local addresses can be used only to communicate over the link to the router to which the device is attached and consist of a randomly generated Interface ID (IID) and a prefix of 0xFE80. The link-local addresses may be used to communicate to all nodes directly connected to the link. Global IPv6 addresses are globally routable addresses which can be used to communicate anywhere on the internet and are formed by generating a random IID and associating it with the network prefix of the current access router.
When a device is connected to a broadcast network it is necessary to validate that there is no other node using a newly generated IID. This procedure is called Duplicate Address Detection (DAD). It is possible that multiple peripheral devices could establish a local connection with a mobile before any external connection to the global internet is formed. In this way those peripheral devices could communicate with each other, and the mobile, without the mobile establishing an outbound internet connection, essentially turning the mobile into a router. However, potential address conflicts can arise when an external connection is made to the global internet. It would be desirable to have a method for preventing these scenarios and avoiding local service interruption due to duplicate address conflicts.